//
//  LZOTool.h
//  KCTFunFit
//
//  Created by Qinsz on 2019/9/24.
//  Copyright © 2019年 KCT. All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface LZOTool : NSObject



/**
 压缩数据

 @param data 待压缩的数据。
 @param blockSize 压缩时使用的块大小（字节）
 @param error 错误信息
 @return 压缩后的数据。压缩发生错误时，可能为空。
 */
+(nullable NSData *)CompressData:(NSData *)data withBlockSize:(NSInteger)blockSize error:(NSError**)error;



/**
 解压LZO数据

 @param LZOData 约定的LZO格式数据
 @param error 错误信息
 @return 解压后的数据。解压发生错误时，可能为空。
 */
+(nullable NSData*)DecompressLZOData:(NSData *)LZOData error:(NSError **)error;




/**
 去掉头信息后的lzo子块文件。

 @param lzoFile 标准的lzo文件
 @return 如果参数不是标准lzo文件，则返回空。
 */
+(nullable NSData *)BlocksDataOfLZOFile:(NSData *)lzoFile;



/**
 判断数据是否经过了LZO压缩

 @param data 待验证的数据
 @return 验证结果。
 */
+(BOOL)IsLZO:(NSData *)data;



/**
 解析LZOData的块大小

 @param lzoData 待解析的LZOData
 @return 如果不是LZO文件则返回-1
 */
+(NSInteger)BlockSizeOfLZOData:(NSData *)lzoData;

@end

NS_ASSUME_NONNULL_END
